package com.nextel.project.devolucion.mvc;



import com.nextel.project.Configuracion;
import com.nextel.project.cliente.ControlCliente;
import com.nextel.project.devolucion.ControlDevolucion;
import com.nextel.project.devolucion.bean.DevolucionDetalleBean;
import com.nextel.project.pedido.ControlPedido;
import com.nextel.project.devolucion.mvc.validate.ValidateDevolucionResumenForm;
import com.nextel.ui.OCompositeScreen;
import com.nextel.ui.OEditableGrid;
import com.nextel.ui.OGrid;
import com.nextel.ui.OGridInfo;
import com.nextel.ui.OGridObjectRow;
import com.nextel.ui.OHandset;
import com.nextel.ui.OLabel;
import com.nextel.ui.OSoftKey;
import com.nextel.ui.OUILook;
import com.nextel.ui.custom.ODialogListener;
import javax.microedition.lcdui.Graphics;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.main.MVCAction;
import pe.com.nextel.util.List;

/**
 *
 *  
 */
public class MVCResumenDevolucion extends MVCAction implements ODialogListener { //, Procesar

    public OLabel texto;
    //OGrid
    public OEditableGrid table;
    private ValidateDevolucionResumenForm validateForm;
    private List lista;
    private boolean flagForm; // para que no presione dos veces al momento de buscar
    private OSoftKey cmdBuscar, cmdFin, cmdCancelar;

    //OGrid
    public OEditableGrid getTable() {
        return table;
    }

    public OLabel getString() {
        return texto;
    }

    public OCompositeScreen getScreen() {
        return formulario;
    }

    protected void destroy() {
        super.destroy();
        this.lista = null;

        if (table != null) {
            table.clear();

            table = null;
        }
    }

    protected void createView() {
 
        cmdBuscar = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_AGREGAR));//"Agregar"
        cmdFin = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_FINALIZAR));//"Finalizar"
        cmdCancelar = new OSoftKey(Configuracion.BOTON_ATRAS);
       
        

        formulario.setTitle("", OUILook.PLAIN_SMALL_TEXT);

        formulario.addSoftKey(cmdBuscar);
        formulario.addSoftKey(cmdFin);
        formulario.addSoftKey(cmdCancelar);

    }

    protected void createItems() {

        setTitulo();
        crearLista();
        flagForm = true;
    }

    public void setTitulo() {
        formulario.setTitle(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_DEVOLUCION)+" - # " + ControlDevolucion.getInstance().currentDevolucion.getLstDevolucionDetalle().size(), OUILook.PLAIN_SMALL_TITLE); //Devolución
    }

    private void crearLista() {

        texto = new OLabel(" ", OUILook.PLAIN_SMALL_TEXT);
        formulario.add(texto);

        int numberOfviewportLines = 3;
        int numberOfColumns = 3;
        String columnNames[] = {IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_CODIGO), IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_CANT), IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_OBS)};
        
        int maxWidth = (int) (formulario.getWidth() * numberOfColumns / 3.0);
        int columnWidths[] = {maxWidth / numberOfColumns, maxWidth / numberOfColumns, maxWidth / numberOfColumns};
        int columnAlignments[] = {Graphics.LEFT, Graphics.HCENTER, Graphics.HCENTER};



        OGridInfo gridInfo = new OGridInfo(OGridInfo.GRID_BORDER_TYPE_BOTH, numberOfviewportLines,
                numberOfColumns,
                columnNames,
                columnAlignments, columnWidths, maxWidth,
                OUILook.PLAIN_SMALL_TEXT,
                OUILook.PLAIN_SMALL_TEXT, OUILook.PLAIN_SMALL_TEXT);

        table = new OEditableGrid(gridInfo);

        validateForm = new ValidateDevolucionResumenForm(this);
        table.setTableListener(validateForm);

        obtenerLista(numberOfColumns);
        table.setColumnHeadings(columnNames, OUILook.PLAIN_SMALL_TITLE);
        table.setViewableWidth(formulario.getWidth());
        formulario.add(table);


        if (ControlDevolucion.getInstance().currentDevolucion.getLstDevolucionDetalle().size() <= 0) {
            table.keyPressed(OGrid.BTN_OK);
        }
    }

    private void obtenerLista(int numberOfColumns) {
        try {
            DevolucionDetalleBean bean;

            lista = ControlDevolucion.getInstance().currentDevolucion.getLstDevolucionDetalle();

            if (lista != null) {

                OGridObjectRow items[] = new OGridObjectRow[lista.size()];

                for (int i = 0; i < lista.size(); i++) {

                    bean = (DevolucionDetalleBean) lista.get(i);
                    OGridObjectRow row = new OGridObjectRow(numberOfColumns);

                    String Obs = bean.getObservaciones();
                    if (Obs.length() > 6) {
                        Obs = Obs.substring(0, 6);
                    }

                    row.addCell(0, bean.getCodigoArticulo());
                    row.addEditableCell(1,Configuracion.CambiarSimbolo(bean.getCantidad()));
                    row.addCell(2, Obs);

                    items[i] = row;
                }
                table.populate(items);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void performAction(OSoftKey c) {

        if (flagForm) {

            if (c == cmdCancelar) {


                ControlPedido.getInstance().showConfirmacion(
                        IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_CONFIRMAR_CANCELAR_DEVOLUCION),//"Esta seguro que desea cancelar la devolucion?"
                        this, formulario);


            } else if (c == cmdFin) {
                //actionBussinesst.getCurrentPedido().calcularMontoTotal();
                if (validateForm.validarTabla() && consistenciar()) {
                    flagForm = false;

                    ControlDevolucion.getInstance().setCurrent(ControlDevolucion.getInstance().mvcDevolucionFin);
                    destroy();
                } else {
                    ControlPedido.getInstance().showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_COMPLETAR_DATOS), getScreen());//"COMPLETAR DATOS"
                }

            } else if (c == cmdBuscar) {
                ControlPedido.getInstance().setBusquedaMVC();
                if (validateForm.validarTabla()) {
                    ControlDevolucion.getInstance().mvcProductoBusqueda.setBusquedaMVC(ControlDevolucion.getInstance().getBusquedaMVC());
                    ControlPedido.getInstance().setCurrent(ControlDevolucion.getInstance().mvcProductoBusqueda);

                    destroy();
                } else {
                    ControlPedido.getInstance().showMensaje(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_COMPLETAR_DATOS), getScreen());//"COMPLETAR DATOS"
                }
            }

        }
    }

    public boolean consistenciar() {
        if (ControlDevolucion.getInstance().currentDevolucion.getLstDevolucionDetalle().size() > 0) {
            return true;
        }
        return false;
    }


    public void botonOK() {

        if (flagForm) {
            flagForm = false;
            destroy();
            ControlDevolucion.getInstance().currentDevolucion = (null);
            ControlDevolucion.getInstance().currentDevolucionDetalle = (null);
            ControlDevolucion.getInstance().setCurrent(ControlCliente.getInstance().mvcClienteDetalle);

        }
    }

    public void botonCancel() {
        flagForm = true;
        OHandset.getDisplay().setCurrent(formulario);
    }
}
